mod app;
mod logging;
mod task;
mod ui;
mod utils;

use anyhow::Result;
use app::{App, Message};
use iced::{Settings, Size, Theme, Font, Task};

fn main() -> Result<()> {
    // 初始化日志
    env_logger::init();
    log::info!("应用程序启动");

    // 加载字体文件
    let font_data = include_bytes!("../res/fonts/MapleMono-NF-CN-Regular.ttf");

    // 运行 iced 应用程序
    iced::application("GUI 任务管理器", update_with_logging, App::view)
        .theme(|_: &App| Theme::Dark)
        .subscription(App::subscription)
        .settings(Settings {
            fonts: vec![font_data.as_slice().into()],
            default_font: Font::with_name("Maple Mono NF CN"),
            default_text_size: iced::Pixels(16.0),
            ..Default::default()
        })
        .window(iced::window::Settings {
            size: Size::new(1000.0, 700.0),
            resizable: true,
            decorations: true,
            transparent: false,
            ..Default::default()
        })
        .run()?;

    Ok(())
}

fn update_with_logging(app: &mut App, message: Message) -> Task<Message> {
    // 记录某些重要操作到日志
    match &message {
        Message::AddTask => {
            log::info!("用户添加了新任务");
        }
        Message::StartTask(id) => {
            log::info!("用户启动了任务 ID: {}", id);
        }
        Message::StopTask(id) => {
            log::info!("用户停止了任务 ID: {}", id);
        }
        Message::SetTaskFailed(id) => {
            log::warn!("任务 ID: {} 被设置为失败状态", id);
        }
        Message::ToggleSettings => {
            log::debug!("用户切换了设置界面");
        }
        Message::ValidateRegCode => {
            log::info!("用户尝试验证注册码");
        }
        _ => {}
    }

    // 调用原始的更新函数
    app.update(message)
}
